[アップデート] Amazon Elasticsearch Service でアラート機能がサポートされました

[アップデート] Amazon Elasticsearch Service でアラート機能がサポートされました

Clock Icon2019.04.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。中川です。
Amazon Elasticsearch Service で、アラート機能がサポートされましたので、試してみました。

Amazon Elasticsearch Service でイベント監視およびアラートのサポートを開始

先月、AWS は Elasticearch の新しいディストリビューション"Open Distro for Elasticsearch"を公開しました。
このディストリビューションによって追加される機能が、今回のアップデートで追加された形になります。
ディストリビューションの詳細については、以下の記事を参考にしていただければと思います。

AWSがElasticsearchの新ディストリビューションをApacheライセンスで公開

なお、アラート機能を利用するにあたって、以下の点には注意しましょう。

  • Elasticsearchのバージョンが 6.2 以上であること(本ブログでも6.2を使用)
  • ソフトウェアリリースは、R20190221以上であること
  • SNS連携はOpen Distro for Elasticsearchには無く、Amazon Elasticsearch Serviceの独自機能であること

やってみた

環境

構成はこのようになっており、Web サーバーのアクセスログを Elasticsearch に収集しています。
今回は、HTTP ステータスコードが 200 以外で、一定回数発生した場合に、メール通知します。

SNSを作成

通知するための SNS トピックを作成します。
メールで通知するため、ここでは Email を選択しています。

IAMロールを作成

Elaticsearch が SNS を使用するため、以下のロールを作成します。
ポリシーは、公式ドキュメントに記載されています。

ロール

ポリシー

信頼関係

通知先を設定

いよいよ Elasticsearch の設定に入っていきます。
まず、通知先の設定をします。
Alerting > Destinationsと選択し、[Add destionation]をクリックします。

各項目を入力し、[Create]をクリックします。

監視を設定

続いて監視の設定をします。
Monitorsを選択し、[Create monitor]をクリックします。

監視設定の項目を入力します。
ここでは監視間隔を 5 分で設定しています。

監視定義を設定します。
今回はクエリを使用して定義をするため、Define using extraction queryを選択し、Index ではアクセスログのインデックスを指定しています。
クエリでは、ステータスコードが 200 以外であることをカウント対象にしています。

使用したクエリは以下のとおりです。

{
	"size": 0,
	"query": {
		"bool": {
			"filter": [
				{
					"range": {
						"@timestamp": {
							"from": "{{period_end}}||-5m",
							"to": "{{period_end}}",
							"include_lower": true,
							"include_upper": true,
							"format": "epoch_millis",
							"boost": 1
						}
					}
				}
			],
			"must_not": [
				{
					"match": {
						"response": "200"
					}
				}
			],
			"adjust_pure_negative": true,
			"boost": 1
		}
	},
	"aggregations": {}
}

トリガーを設定

最後にトリガーの設定です。
トリガー名と重要度を設定します。

上のExtraction query responseでは、設定時におけるクエリ結果が表示されており、下のTrigger conditionでトリガーの条件を設定しています。
ここでは、10 回以上ヒットした場合を条件にしています。

さきほど設定した通知先をトリガーに設定し、[Create]をクリックすると設定は完了になります。

動作確認

Web サーバーで 504 エラーを返しました。

メールが届くことを確認できました。

さいごに

Elasticsearch 上でログ監視とアラートをやってみました。
以前は、Elasticsearch にログを収集していても、監視は他のサーバーやサービスで実装する必要がありました。
Elasticsearch では、検索クエリを用いた複雑な監視ができたり、他のデータストアを使用しない分のコスト削減をできるので、ログ監視の選択肢は増えたと思います。
Amazon Elasticsearch Service は、今後もますます機能追加が期待できるため、引き続き注目していきたいです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.